|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Решение:
Код для события Click вашей кнопки Получить данные может быть таким: Private Sub CommandButton1_Click()
Private Sub CommandButton1_Click() 'Вначале - чистим всю книгу от старых данных Cells.Select Selection.Clear
' Создаем и настраиваем объект Connection Dim cn As New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Борей.mdb" cn . Open
'Создаем и настраиваем объект Recordset Dim rs As New ADODB.Recordset rs.Open"SELECT[КодТовара],[Марка],[Цена],[НаСкладе],[МинимальныйЗапас]," & _ "[ПоставкиПрекращены] FROM Товары", cn
'На основе Recordset создаем объект QueryTable и вставляем его, начиная с 4-й строки Dim QT1 As QueryTable Set QT1 = QueryTables.Add(rs, Range("A4")) QT1. Refresh
'Определяем количество записей в QueryTable Dim nRowCount As Integer Dim oRange As Range Set oRange = QT1.ResultRange nRowCount = oRange.Rows.Count
'Формируем столбец "Заказать товара, штук" Range("G4").Value = "Заказать товара, штук" Range("G4").Font.Bold = True Range("G4").Columns.AutoFit
'Формируем столбец "Стоимость заказа" Range (" H 4"). Value = "Стоимость заказа" Range("H4").Font.Bold = True Range("H4").Columns.AutoFit
'Создаем диапазон, который включит в себя столбец G ' "вдоль" QueryTable Set oRange = Range("G5", "G" & nRowCount + 3)
'Готовим переменные, которые нам потребуются в цикле Dim oCell As Range Dim sRowNumber As String Dim cMoney As Currency Dim cItogMoney As Currency Dim cItogSklad As Currency
'Проходим циклом по всем ячейкам созданного диапазона For Each oCell In oRange.Cells 'Получаем абсолютный номер строки в виде строковой переменной sRowNumber = Replace(oCell.Address(True), "$G$", "") 'Проверяем определенные нами условия If Range("E" & sRowNumber).Value > Range("D" & sRowNumber) And _ Range("F" & sRowNumber).Value = False Then 'Получаем значение для столбца G (заказ в штуках) oCell.Value = (CInt(Range("E" & sRowNumber).Value) - CInt(Range("D" & sRowNumber).Value)) 'Получаем значение для столбца H (стоимость заказа) cMoney = (CInt(Range("E" & sRowNumber).Value) - CInt(Range("D" & sRowNumber).Value)) * CCur(Range("C" & sRowNumber).Value) 'Записываем его в столбец H Range("H" & sRowNumber).Value = cMoney 'Сразу плюсуем к итогу в рублях cItogMoney = cItogMoney + cMoney End If
'И в том же цикле сразу суммируем стоимость товаров на складе cItogSklad = cItogSklad + (Range("C" & sRowNumber).Value * Range("D" & sRowNumber).Value) Next
'Формируем две строки с итогами Range("B" & nRowCount + 6). Value = "Общая стоимость товаров на складе:" Range("B" & nRowCount + 6).Font.Bold = True Range("B" & nRowCount + 7).Value = "Общая стоимость товаров к заказу:" Range("B" & nRowCount + 7).Font.Bold = True Range("D" & nRowCount + 6).Value = cItogSklad Range("D" & nRowCount + 6).Font.Bold = True Range("D" & nRowCount + 7).Value = cItogMoney Range("D" & nRowCount + 7).Font.Bold = True
'Для красоты выделяем итоговое значение: Range("D" & nRowCount + 7). Select ':и производим скроллирование Range("D" & nRowCount + 7).Show
End Sub
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить этот учебник в формате PDF (Acrobat Reader) или DOC (Microsoft Word) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||